home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Misc / bgui / Examples / Source / Backdrop.c < prev    next >
C/C++ Source or Header  |  2000-05-09  |  13KB  |  234 lines

  1. /*
  2.  * @(#) $Header: /cvsroot/bgui/examples/Backdrop.c,v 41.11 2000/05/09 20:33:16 mlemos Exp $
  3.  *
  4.  * Backdrop.c
  5.  *
  6.  * (C) Copyright 1998 Manuel Lemos.
  7.  * (C) Copyright 1995 Jaba Development.
  8.  * (C) Copyright 1995 Jan van den Baard.
  9.  * All Rights Reserved.
  10.  *
  11.  * $Log: Backdrop.c,v $
  12.  * Revision 41.11  2000/05/09 20:33:16  mlemos
  13.  * Bumped to revision 41.11
  14.  *
  15.  * Revision 1.2  2000/05/09 19:58:37  mlemos
  16.  * Merged with the branch Manuel_Lemos_fixes.
  17.  *
  18.  * Revision 1.1.2.1  1998/02/28 17:44:53  mlemos
  19.  * Ian sources
  20.  *
  21.  *
  22.  */
  23.  
  24. /* Execute me to compile with DICE V3.0
  25. dcc Backdrop.c -mi -ms -mRR -proto -lbgui
  26. quit
  27. */
  28.  
  29. #include "DemoCode.h"
  30. #include <graphics/displayinfo.h>
  31.  
  32. /*
  33.  *      Quit object ID.
  34.  */
  35. #define ID_QUIT         1
  36.  
  37. /*
  38.  *      A borderless window ;)
  39.  */
  40. VOID Say( struct Screen *screen )
  41. {
  42.         Object                  *WO_Window, *GO_Ok;
  43.         ULONG                    signal, rc;
  44.         BOOL                     running = TRUE;
  45.  
  46.         /*
  47.          *      Create the window.
  48.          */
  49.         WO_Window = WindowObject,
  50.                 WINDOW_Borderless,      TRUE,
  51.                 WINDOW_SmartRefresh,    TRUE,
  52.                 WINDOW_RMBTrap,         TRUE,
  53.                 WINDOW_AutoAspect,      TRUE,
  54.                 WINDOW_Screen,          screen,
  55.                 WINDOW_MasterGroup,
  56.                         VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 3 ),
  57.                                 FRM_Type,       FRTYPE_BUTTON,
  58.                                 FRM_BackFill,   SHINE_RASTER,
  59.                                 StartMember,
  60.                                         InfoObject,
  61.                                                 FRM_Type,               FRTYPE_BUTTON,
  62.                                                 FRM_Recessed,           TRUE,
  63.                                                 INFO_TextFormat,        ISEQ_C "This demonstration shows you how to\n"
  64.                                                                         "create a backdrop, borderless window with BGUI.\n\n"
  65.                                                                         "You may recognize the GUI as the main window\n"
  66.                                                                         "of SPOT but that's because I could not\n"
  67.                                                                         "come up with something original.\n\n"
  68.                                                                         "Just click on " ISEQ_B "Quit" ISEQ_N " to exit the demo.",
  69.                                                 INFO_FixTextWidth,      TRUE,
  70.                                                 INFO_MinLines,          8,
  71.                                         EndObject,
  72.                                 EndMember,
  73.                                 StartMember,
  74.                                         HGroupObject,
  75.                                                 VarSpace( DEFAULT_WEIGHT ),
  76.                                                 StartMember, GO_Ok = KeyButton( "_OK", ID_QUIT ), EndMember,
  77.                                                 VarSpace( DEFAULT_WEIGHT ),
  78.                                         EndObject, FixMinHeight,
  79.                                 EndMember,
  80.                         EndObject,
  81.         EndObject;
  82.  
  83.         /*
  84.          *      OK?
  85.          */
  86.         if ( WO_Window ) {
  87.                 /*
  88.                  *      Add gadget key.
  89.                  */
  90.                 if ( GadgetKey( WO_Window, GO_Ok, "o" )) {
  91.                         /*
  92.                          *      Open the window.
  93.                          */
  94.                         if ( WindowOpen( WO_Window )) {
  95.                                 GetAttr( WINDOW_SigMask, WO_Window, &signal );
  96.                                 /*
  97.                                  *      Wait for somebody to click
  98.                                  *      on the "OK" gadget.
  99.                                  */
  100.                                 do {
  101.                                         Wait( signal );
  102.                                         while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) {
  103.                                                 if ( rc == ID_QUIT )
  104.                                                         running = FALSE;
  105.                                         }
  106.                                 } while ( running );
  107.                         }
  108.                 }
  109.                 DisposeObject( WO_Window );
  110.         }
  111. }
  112.  
  113. /*
  114.  *      Here we go...
  115.  */
  116. VOID StartDemo( void )
  117. {
  118.         struct Screen           *myscreen, *wblock;
  119.         struct DrawInfo         *dri;
  120.         struct Window           *window;
  121.         Object                  *WO_Window;
  122.         APTR                     wlock;
  123.         ULONG                    mode, rc, signal;
  124.         BOOL                     running = TRUE;
  125.  
  126.         /*
  127.          *      Lock the workbench screen.
  128.          */
  129.         if ( wblock = LockPubScreen( "Workbench" )) {
  130.                 /*
  131.                  *      Obtain it's DrawInfo.
  132.                  */
  133.                 if ( dri = GetScreenDrawInfo( wblock )) {
  134.                         /*
  135.                          *      And mode ID.
  136.                          */
  137.                         if (( mode = GetVPModeID( &wblock->ViewPort )) != INVALID_ID ) {
  138.                                 /*
  139.                                  *      Open a screen ala your workbench.
  140.                                  */
  141.                                 if ( myscreen = OpenScreenTags( NULL, SA_Depth,         dri->dri_Depth,
  142.                                                                       SA_Width,         wblock->Width,
  143.                                                                       SA_Height,        wblock->Height,
  144.                                                                       SA_DisplayID,     mode,
  145.                                                                       SA_Pens,          dri->dri_Pens,
  146.                                                                       SA_Title,         "Backdrop Demo.",
  147.                                                                       TAG_END )) {
  148.                                         /*
  149.                                          *      Create a simple backdrop window on
  150.                                          *      the screen whilst keeping the screen
  151.                                          *      title visible.
  152.                                          */
  153.                                         WO_Window = WindowObject,
  154.                                                 WINDOW_SmartRefresh,            TRUE,
  155.                                                 WINDOW_Backdrop,                TRUE,
  156.                                                 WINDOW_ShowTitle,               TRUE,
  157.                                                 WINDOW_CloseOnEsc,              TRUE,
  158.                                                 WINDOW_AutoAspect,              TRUE,
  159.                                                 WINDOW_NoBufferRP,              TRUE,
  160.                                                 WINDOW_Screen,                  myscreen,
  161.                                                 WINDOW_MasterGroup,
  162.                                                         HGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
  163.                                                                 StartMember,
  164.                                                                         VGroupObject, Spacing( 4 ),
  165.                                                                                 StartMember, Button( "Message list...", 0 ), EndMember,
  166.                                                                                 StartMember, Button( "Messages...",     0 ), EndMember,
  167.                                                                                 VarSpace( 40 ),
  168.                                                                                 StartMember, Button( "Import...",       0 ), EndMember,
  169.                                                                                 StartMember, Button( "Export...",       0 ), EndMember,
  170.                                                                                 StartMember, Button( "Maintenance...",  0 ), EndMember,
  171.                                                                                 StartMember, Button( "Optimize...",     0 ), EndMember,
  172.                                                                                 VarSpace( 40 ),
  173.                                                                                 StartMember, Button( "Poll...",         0 ), EndMember,
  174.                                                                                 StartMember, Button( "File request...", 0 ), EndMember,
  175.                                                                                 VarSpace( 40 ),
  176.                                                                                 StartMember, Button( "Iconify",         0 ), EndMember,
  177.                                                                                 StartMember, Button( "Quit",            ID_QUIT ), EndMember,
  178.                                                                         EndObject, FixMinSize,
  179.                                                                 EndMember,
  180.                                                                 StartMember, ListviewObject, EndObject, EndMember,
  181.                                                         EndObject,
  182.                                         EndObject;
  183.  
  184.                                         /*
  185.                                          *      Window OK?
  186.                                          */
  187.                                         if ( WO_Window ) {
  188.                                                 /*
  189.                                                  *      Open the window.
  190.                                                  */
  191.                                                 if ( window = WindowOpen( WO_Window )) {
  192.                                                         /*
  193.                                                          *      Show an explanation window.
  194.                                                          */
  195.                                                         wlock = BGUI_LockWindow( window );
  196.                                                         Say( myscreen );
  197.                                                         BGUI_UnlockWindow( wlock );
  198.                                                         /*
  199.                                                          *      Pick up the window signal.
  200.                                                          */
  201.                                                         GetAttr( WINDOW_SigMask, WO_Window, &signal );
  202.                                                         /*
  203.                                                          *      Event loop...
  204.                                                          */
  205.                                                         do {
  206.                                                                 Wait( signal );
  207.                                                                 while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) {
  208.                                                                         switch ( rc ) {
  209.  
  210.                                                                                 case    WMHI_CLOSEWINDOW:
  211.                                                                                 case    ID_QUIT:
  212.                                                                                         running = FALSE;
  213.                                                                                         break;
  214.                                                                         }
  215.                                                                 }
  216.                                                         } while ( running );
  217.                                                 } else
  218.                                                         Tell( "Unable to open the window\n" );
  219.                                                 DisposeObject( WO_Window );
  220.                                         } else
  221.                                                 Tell( "Unable to create the window object\n" );
  222.                                         CloseScreen( myscreen );
  223.                                 } else
  224.                                         Tell( "Unable to open the screen\n" );
  225.                         } else
  226.                                 Tell( "Unknown screen mode\n" );
  227.                         FreeScreenDrawInfo( wblock, dri );
  228.                 } else
  229.                         Tell( "Unable to get DrawInfo\n" );
  230.                 UnlockPubScreen( NULL, wblock );
  231.         } else
  232.                 Tell( "Unable to lock the Workbench screen\n" );
  233. }
  234.